import axios from 'axios'
export default {
  namespaced: true,
  state () {
    return {
      // 这个list用来存购物车数据
      list: []
    }
  },
  // 计算属性
  getters: {
    // 总数量
    totalCount (state) {
      // 统计出所有的数量
      return state.list.reduce((sum, v) => (sum += v.count), 0)
    },
    // 总价
    totalPrice (state) {
      // 统计出所有的数量
      return state.list.reduce((sum, v) => (sum += v.count * v.price), 0)
    }
  },

  mutations: {
    // 修改list的方法
    setList (state, list) {
      state.list = list
    },

    // 根据id修改对应数据的数量
    changeCountById (state, obj) {
      // 根据id找出数据
      const item = state.list.find(v => v.id === obj.id)
      // 再把数据的数量给改了
      item.count = obj.count
    }
  },

  actions: {
    // 获取购物车
    async updateList (ctx) {
      // 发请求
      const res = await axios({
        url: 'http://localhost:3000/cart'
      })
      // 调用mutations里的方法
      ctx.commit('setList', res.data)
    },

    // 用来修改购物车数量的方法
    async updateCount (ctx, obj) {
      // 拿到最终要修改的数量，要发请求
      // console.log('传递过来的数量', obj)
      await axios({
        url: `http://localhost:3000/cart/${obj.id}`,
        method: 'patch',
        data: {
          count: obj.count
        }
      })

      // 发完要修改到本地的state里（调用mutations）
      ctx.commit('changeCountById', obj)
    }
  }
}
